package shujia.day05;

/**
 * 该类是针对数组常用操作的工具类。
 *
 * @author 数加-xiaohu
 * @version V1.0.0版本
 */
public class ArrayTool {
    private ArrayTool(){

    }

    /**
     * 格式化输出int类型的一维数组。例如输出结构为: [元素1,元素2,...]
     * @param array 传入一个int类型的一维数组
     */
    public static void printIntArray(int[] array) {
        for (int i = 0; i < array.length; i++) {
            if (i == 0) {
                System.out.print("[" + array[i] + ",");
            } else if (i == array.length - 1) {
                System.out.println(array[i] + "]");
            } else {
                System.out.print(array[i] + ",");
            }
        }
    }

    /**
     * 针对int类型的一维数组，进行逆序
     * @param arr1 传入一个int类型的一维数组
     */
    public static void niXu(int[] arr1){
        for (int front = 0, end = arr1.length - 1; front < end; front++, end--) {
            int tmp = arr1[front];
            arr1[front] = arr1[end];
            arr1[end] = tmp;
        }
    }

    /**
     * 获取一维数组中的最小值
     * @param arr 传入一个int类型的一维数组
     * @return 返回最小值，若数组为空，返回-1
     *
     */
    public static int getMinNumber(int[] arr) {
        if (arr == null) {
            return -1;
        }

        //默认将第一个元素作为最小值
        int minNum = arr[0];
        //从第二个元素遍历数组，与minNum变量值进行比较，如果比它小，直接覆盖旧值
        for (int i = 1; i < arr.length; i++) {
            if (arr[i] < minNum) {
                minNum = arr[i];
            }
        }

        return minNum;
    }

    /**
     * 获取一维数组中的最大值
     * @param arr 传入一个int类型的一维数组
     * @return 返回最大值，若数组为空，返回-1
     *
     */
    public static int getMaxNumber(int[] arr) {
        if (arr == null) {
            return -1;
        }

        //默认将第一个元素作为最大值
        int maxNum = arr[0];
        //从第二个元素遍历数组，与maxNum变量值进行比较，如果比它大，直接覆盖旧值
        for (int i = 1; i < arr.length; i++) {
            if (arr[i] > maxNum) {
                maxNum = arr[i];
            }
        }

        return maxNum;
    }
}
